<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>iomodule: xiomodule_intr_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">iomodule
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xiomodule__intr__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xiomodule_intr_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains a design example using the IO Module driver (<a class="el" href="struct_x_i_o_module.html" title="The XIOModule driver instance data. ">XIOModule</a>) and hardware device using interrupt mode.This example tests the internal interrupts in the IO Module. </p>
<p>This file can be used as a standalone example or by the TestAppGen utility to include a test of IOModule interrupts.</p>
<dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>None</p>
<pre></pre><pre>MODIFICATION HISTORY:</pre><pre>Ver   Who  Date     Changes
</p>
<hr/>
<p>
1.00a sa   07/15/11 First release
2.4   ms   01/23/17 Added xil_printf statement in main function to
                    ensure that "Successfully ran" and "Failed" strings
                    are available in all examples. This is a fix for
                    CR-965028.
2.16  ml   12/07/23 Make TimerExpired as a static variable.
2.19  ml   04/18/25 Added support for system device-tree flow.
</pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a42a91b22019542c146d78f2c4bfe27fe"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a42a91b22019542c146d78f2c4bfe27fe">IOModuleIntrExample</a> (<a class="el" href="struct_x_i_o_module.html">XIOModule</a> *IOModuleInstancePtr, u32 DeviceId)</td></tr>
<tr class="memdesc:a42a91b22019542c146d78f2c4bfe27fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function does a minimal test on the IO Module device and driver as a design example.  <a href="#a42a91b22019542c146d78f2c4bfe27fe">More...</a><br/></td></tr>
<tr class="separator:a42a91b22019542c146d78f2c4bfe27fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6339f8de3299aa4330089d886cb41022"><td class="memItemLeft" align="right" valign="top">XStatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a6339f8de3299aa4330089d886cb41022">IOModuleInterruptSetup</a> (<a class="el" href="struct_x_i_o_module.html">XIOModule</a> *IOModuleInstancePtr, u32 DeviceId)</td></tr>
<tr class="memdesc:a6339f8de3299aa4330089d886cb41022"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is used by the TestAppGen generated application to setup the IO Module interrupts.  <a href="#a6339f8de3299aa4330089d886cb41022">More...</a><br/></td></tr>
<tr class="separator:a6339f8de3299aa4330089d886cb41022"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3aa1ae68bdc720a276454934186b78ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a3aa1ae68bdc720a276454934186b78ab">IOModuleHandler</a> (void *CallBackRef, u8 Timer)</td></tr>
<tr class="memdesc:a3aa1ae68bdc720a276454934186b78ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the handler which performs processing for the IO module.  <a href="#a3aa1ae68bdc720a276454934186b78ab">More...</a><br/></td></tr>
<tr class="separator:a3aa1ae68bdc720a276454934186b78ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a466b29096ee3199dd3ee950ce20a8523"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a466b29096ee3199dd3ee950ce20a8523">IOModuleSetupIntrSystem</a> (void)</td></tr>
<tr class="memdesc:a466b29096ee3199dd3ee950ce20a8523"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function initializes and enables exception handling for interrupts in the processor.  <a href="#a466b29096ee3199dd3ee950ce20a8523">More...</a><br/></td></tr>
<tr class="separator:a466b29096ee3199dd3ee950ce20a8523"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86fc21e1458de7ebff30e9a959ecd773"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a86fc21e1458de7ebff30e9a959ecd773">IOModuleDisableIntr</a> (<a class="el" href="struct_x_i_o_module.html">XIOModule</a> *IOModuleInstancePtr)</td></tr>
<tr class="memdesc:a86fc21e1458de7ebff30e9a959ecd773"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function disables the interrupts for the IO Module.  <a href="#a86fc21e1458de7ebff30e9a959ecd773">More...</a><br/></td></tr>
<tr class="separator:a86fc21e1458de7ebff30e9a959ecd773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiomodule__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the main function for the IO Module example.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br/></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a86fc21e1458de7ebff30e9a959ecd773"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void IOModuleDisableIntr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_i_o_module.html">XIOModule</a> *&#160;</td>
          <td class="paramname"><em>IOModuleInstancePtr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function disables the interrupts for the IO Module. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IOModuleInstancePtr</td><td>is a reference to the IO Module driver Instance.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="group__iomodule.html#ga2ab631d859f9fc7b00f3c8367d763c49">XIOModule_Disable()</a>.</p>

<p>Referenced by <a class="el" href="xiomodule__intr__example_8c.html#a42a91b22019542c146d78f2c4bfe27fe">IOModuleIntrExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a3aa1ae68bdc720a276454934186b78ab"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void IOModuleHandler </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>CallBackRef</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u8&#160;</td>
          <td class="paramname"><em>Timer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is the handler which performs processing for the IO module. </p>
<p>It is called from an interrupt context such that the amount of processing performed should be minimized. It is called when an interrupt occurs if interrupts are enabled.</p>
<p>This handler provides an example of how to handle Programmable Interval Timer interrupts but is application specific.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">CallBackRef</td><td>is a pointer to the callback function </td></tr>
    <tr><td class="paramname">Timer</td><td>is the number of the interrupt this handler is associated with.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="group__iomodule.html#ga404ac6ebc7137131bf0d277256c07605">XIOModule_IsExpired()</a>, and <a class="el" href="group__iomodule.html#ga719529740fbb19c3ce7d44078a2edcc1">XIOModule_Timer_SetOptions()</a>.</p>

<p>Referenced by <a class="el" href="xiomodule__intr__example_8c.html#a42a91b22019542c146d78f2c4bfe27fe">IOModuleIntrExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a6339f8de3299aa4330089d886cb41022"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus IOModuleInterruptSetup </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_i_o_module.html">XIOModule</a> *&#160;</td>
          <td class="paramname"><em>IOModuleInstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>DeviceId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is used by the TestAppGen generated application to setup the IO Module interrupts. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IOModuleInstancePtr</td><td>is the reference to the IO Module instance. </td></tr>
    <tr><td class="paramname">DeviceId</td><td>is device ID of the IO Module Device , typically XPAR_&lt;IOMODULE_instance&gt;_DEVICE_ID value from xparameters.h</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS to indicate success, otherwise XST_FAILURE</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="xiomodule__intr__example_8c.html#a466b29096ee3199dd3ee950ce20a8523">IOModuleSetupIntrSystem()</a>, <a class="el" href="group__iomodule.html#ga81cf0087aeb46a8a78030e964e743314">XIOModule_Initialize()</a>, <a class="el" href="group__iomodule.html#ga4a295427c84e3c7f0cee3440ba119093">XIOModule_SelfTest()</a>, and <a class="el" href="group__iomodule.html#ga2841593e6e312fefe9f190a75e11fdb4">XIOModule_Start()</a>.</p>

</div>
</div>
<a class="anchor" id="a42a91b22019542c146d78f2c4bfe27fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">XStatus IOModuleIntrExample </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_x_i_o_module.html">XIOModule</a> *&#160;</td>
          <td class="paramname"><em>IOModuleInstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u32&#160;</td>
          <td class="paramname"><em>DeviceId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function does a minimal test on the IO Module device and driver as a design example. </p>
<p>The purpose of this function is to illustrate how to use the IO Module component. It initializes the Programmable Interval Timers and then sets it up in compare mode with auto reload such that a periodic interrupt is generated.</p>
<p>This function uses interrupt driven mode of the IO Module.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IOModuleInstancePtr</td><td>is a pointer to the IO Module driver Instance </td></tr>
    <tr><td class="paramname">DeviceId</td><td>is the XPAR_&lt;IOModule_instance&gt;_DEVICE_ID value from xparameters.h</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if the Test is successful, otherwise XST_FAILURE</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function contains an infinite loop such that if interrupts are not working it may never return. </dd></dl>

<p>References <a class="el" href="struct_x_i_o_module.html#ad44f07ede4a771acec5e5ae601868957">XIOModule::CfgPtr</a>, <a class="el" href="xiomodule__intr__example_8c.html#a86fc21e1458de7ebff30e9a959ecd773">IOModuleDisableIntr()</a>, <a class="el" href="xiomodule__intr__example_8c.html#a3aa1ae68bdc720a276454934186b78ab">IOModuleHandler()</a>, <a class="el" href="xiomodule__intr__example_8c.html#a466b29096ee3199dd3ee950ce20a8523">IOModuleSetupIntrSystem()</a>, <a class="el" href="struct_x_i_o_module___config.html#a5c0381d3b8d1e99b208b782614f11f0d">XIOModule_Config::PitPrescaler</a>, <a class="el" href="struct_x_i_o_module___config.html#ae298eeffae861524bf2c6c28bff619fb">XIOModule_Config::PitReadable</a>, <a class="el" href="struct_x_i_o_module___config.html#afa1a7a766b5e49c877ef0a95f78a374f">XIOModule_Config::PitSize</a>, <a class="el" href="struct_x_i_o_module___config.html#a3ebe198577cb922a5427f7d1bb1764bd">XIOModule_Config::PitUsed</a>, <a class="el" href="group__iomodule.html#ga0c2fe0ab1367af43b603cd896e306737">XIOModule_Enable()</a>, <a class="el" href="group__iomodule.html#ga81cf0087aeb46a8a78030e964e743314">XIOModule_Initialize()</a>, <a class="el" href="group__iomodule.html#ga4a295427c84e3c7f0cee3440ba119093">XIOModule_SelfTest()</a>, <a class="el" href="group__iomodule.html#gab2e5ac3f9e5a286fd376120cb27f545d">XIOModule_SetHandler()</a>, <a class="el" href="group__iomodule.html#gaf9ed2111d2f53ac88626030d907f374a">XIOModule_SetResetValue()</a>, <a class="el" href="group__iomodule.html#ga719529740fbb19c3ce7d44078a2edcc1">XIOModule_Timer_SetOptions()</a>, <a class="el" href="group__iomodule.html#ga622c3a5cd4e43543cfb445071d01e7a9">XIOModule_Timer_Start()</a>, and <a class="el" href="group__iomodule.html#ga60bd9ef270b0de7440206326ec1fe710">XIOModule_Timer_Stop()</a>.</p>

<p>Referenced by <a class="el" href="xiomodule__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="a466b29096ee3199dd3ee950ce20a8523"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void IOModuleSetupIntrSystem </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function initializes and enables exception handling for interrupts in the processor. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IOModuleInstancePtr</td><td>is the reference to the IO Module instance.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>None.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="group__iomodule.html#ga2e47bfda481c3ceab60d758f049758ef">XIOModule_DeviceInterruptHandler()</a>.</p>

<p>Referenced by <a class="el" href="xiomodule__intr__example_8c.html#a6339f8de3299aa4330089d886cb41022">IOModuleInterruptSetup()</a>, and <a class="el" href="xiomodule__intr__example_8c.html#a42a91b22019542c146d78f2c4bfe27fe">IOModuleIntrExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This is the main function for the IO Module example. </p>
<p>This function is not included if the example is generated from the TestAppGen test tool.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">None.</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS to indicate success, otherwise XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="xiomodule__intr__example_8c.html#a42a91b22019542c146d78f2c4bfe27fe">IOModuleIntrExample()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
